/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package adsreis.com.Controls;

import adsreis.com.Beans.OSBean;
import adsreis.com.Beans.OSdetBean;
import adsreis.com.Beans.ProdutosBean;
import adsreis.com.acessobd.AcessoMySql;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Pauroenriki
 */
public class OSControl {
    PreparedStatement pstm;
    ResultSet rs;
    String cadastraOs = "INSERT INTO OS (CODOS, IDSTATUSOS, IDFUNCIONARIO, IDCLIENTE, IDFORMA, IDCOND, DATAOS, SUBTOTAL, SERVICOTERCEIRO, MAOOBRA, DESCONTO, TOTAL, VALORPAGO, RESTA,OBS) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    String buscaUltimoCodigo = "SELECT MAX(CODOS) AS CODOS FROM OS";
    String cadastraItem = "INSERT INTO OSDET(IDOS, IDPRODUTO, QTDOS) VALUES(?,?,?)";
    String deleta = "DELETE FROM OS WHERE CODOS = ?";
    String consultaOs = "SELECT * FROM CONSULTAOS" + " WHERE DATAOS BETWEEN ? AND ? ORDER BY OS";
    Integer codvenda;
    Integer duplicidade;
    String consultaItens = "SELECT OSDET.IDOS, OSDET.IDPRODUTO, PRODUTOS.DESCRICAO, PRODUTOS.VLRVENDA, OSDET.QTDOS FROM OSDET, PRODUTOS WHERE OSDET.IDOS LIKE ? AND OSDET.IDPRODUTO = PRODUTOS.CODPRODUTO";
    String busca = "SELECT * FROM PRODUTOS WHERE CODPRODUTO LIKE ? OR DESCRICAO LIKE ?";
    public static List<ProdutosBean> produtos1 = new ArrayList<>();
        String alteraStatus = "UPDATE OS SET IDSTATUSOS =? WHERE CODOS = ?";
        String alteraOS = "UPDATE OS SET IDSTATUSOS = ?, IDFUNCIONARIO = ?, IDCLIENTE =?, IDFORMA =?, IDCOND =?, SUBTOTAL =?, SERVICOTERCEIRO =?, MAOOBRA =?, DESCONTO =?, TOTAL =?, VALORPAGO =?, RESTA =?,OBS =? WHERE CODOS =?";
        String consultaOss = "SELECT * FROM CONSULTAOS WHERE OS = ? ORDER BY OS";
        public OSControl(){
            
        }
        
        public List<OSBean> listarOS1(int oss){
        try {
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(consultaOss);
            pstm.setInt(1, oss);
            
            rs = pstm.executeQuery();
            List<OSBean> os = new ArrayList<>();
            
            //duplicidade = 1;
            //codvenda = 0;
            
            while (rs.next()){
                OSBean ob = new OSBean();
               // duplicidade = rs.getInt("os");
               // if(duplicidade != codvenda){
                ob.setCodOs(rs.getInt("os"));
                ob.setIDStatus(rs.getInt("idstatus"));
                ob.setStatusOs(rs.getString("statusos"));
                ob.setIDCliente(rs.getInt("idcliente"));
                ob.setNomecli(rs.getString("nomecli"));  
                ob.setIDFuncionario(rs.getInt("idfuncionario"));
                ob.setNomefunc(rs.getString("nomefunc"));
                //vb.setIDProduto(rs.getInt("vendas.idproduto"));
                ob.setIDForma(rs.getInt("idforma"));
                ob.setFormaPgto(rs.getString("forma"));
                ob.setIDCond(rs.getInt("idcond"));
                ob.setCondPgto(rs.getString("cond"));
                ob.setDataos(rs.getDate("dataos"));
                //vb.setQtd(rs.getInt("qtd"));
                ob.setSubTotal(rs.getDouble("subtotal"));
                ob.setServicoTerceiro(rs.getDouble("servicoterceiro"));
                ob.setMaoObra(rs.getDouble("maoobra"));
                ob.setDesconto(rs.getDouble("desconto"));
                ob.setTotal(rs.getDouble("total"));
                ob.setObs(rs.getString("obs"));
                ob.setTelefone(rs.getString("telefone"));
                ob.setValorPago(rs.getDouble("valorpago"));
                ob.setResta(rs.getDouble("resta"));
                ob.setCelular(rs.getString("celular"));
                ob.setOperadora(rs.getString("operadora"));
                
                os.add(ob);
               // codvenda = rs.getInt("os");
                
              //   } else{
                       
                
              //  }
                
            }
            mysql.desconectar();
            return os;
        } catch (SQLException ex) {
           // ex.printStackTrace();
            ex.getMessage();
        }
        return null;
    }
        
        
        
        
        
        public void alterarOS(OSBean os){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(alteraOS);
           pstm.setInt(1, os.getIDStatus());
           pstm.setInt(2, os.getIDFuncionario());
           pstm.setInt(3, os.getIDCliente());
           pstm.setInt(4,os.getIDForma());
           pstm.setInt(5,os.getIDCond());
           pstm.setDouble(6, os.getSubTotal());
           pstm.setDouble(7, os.getServicoTerceiro());
           pstm.setDouble(8, os.getMaoObra());
           pstm.setDouble(9, os.getDesconto());
           pstm.setDouble(10, os.getTotal());
           pstm.setDouble(11, os.getValorPago());
           pstm.setDouble(12, os.getResta());
           pstm.setString(13, os.getObs());
           pstm.setInt(14, os.getCodOs());
           
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
        
         public void alterarStatus(OSBean os){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(alteraStatus);
           pstm.setInt(1, os.getIDStatus());
           pstm.setInt(2,os.getCodOs());
           
           
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
        
         
         public List<ProdutosBean> listarProdutos(String codproduto){
        
        List<ProdutosBean> produtos = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(busca);
           pstm.setString(1, codproduto);
           pstm.setString(2, codproduto);
           rs = pstm.executeQuery();
           ProdutosBean prod;
           while (rs.next()){
               prod = new ProdutosBean();
               prod.setCodProduto(rs.getString("codproduto"));
               prod.setDescricao(rs.getString("descricao"));
               //prod.setMarca(rs.getString("marca"));
               prod.setVlrCusto(rs.getDouble("vlrcusto"));              
               prod.setVlrVenda(rs.getDouble("vlrvenda"));
               //prod.setQtdEstoque(rs.getInt("qtdestoque"));
               produtos.add(prod);  
               //System.out.println(rs.getString("descricao"));
               produtos1 = produtos;
           }
           mysql.desconectar();
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return produtos1;  
        
        
        //Vendas ven = Vendas.getInstance();
    
        
        
        
        
    }
         
         
        public List<OSdetBean> listarItens(Integer idos){
        try {
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(consultaItens);
            
            pstm.setInt(1, idos);
            rs = pstm.executeQuery();
            List<OSdetBean> os = new ArrayList<>();
            while (rs.next()){
                OSdetBean ob = new OSdetBean();
                ob.setIDOs(rs.getInt("osdet.idos"));
                ob.setIdproduto(rs.getString("osdet.idproduto"));
                ob.setDescricaoproduto(rs.getString("produtos.descricao"));
                //ob.setMarca(rs.getString("produtos.marca"));
                ob.setPreco(rs.getDouble("produtos.vlrvenda"));
                ob.setQtdOs(rs.getInt("osdet.qtdos"));
                os.add(ob);
            }
            mysql.desconectar();
            return os;
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;
    } 
         
        
        public List<OSBean> listarOS(Date dataInicial, Date dataFinal){
        try {
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(consultaOs);
            pstm.setDate(1, dataInicial);
            pstm.setDate(2, dataFinal);
            rs = pstm.executeQuery();
            List<OSBean> os = new ArrayList<>();
            
            //duplicidade = 1;
            //codvenda = 0;
            
            while (rs.next()){
                OSBean ob = new OSBean();
               // duplicidade = rs.getInt("os");
               // if(duplicidade != codvenda){
                ob.setCodOs(rs.getInt("os"));
                ob.setIDStatus(rs.getInt("idstatus"));
                ob.setStatusOs(rs.getString("statusos"));
                ob.setIDCliente(rs.getInt("idcliente"));
                ob.setNomecli(rs.getString("nomecli"));  
                ob.setIDFuncionario(rs.getInt("idfuncionario"));
                ob.setNomefunc(rs.getString("nomefunc"));
                //vb.setIDProduto(rs.getInt("vendas.idproduto"));
                ob.setIDForma(rs.getInt("idforma"));
                ob.setFormaPgto(rs.getString("forma"));
                ob.setIDCond(rs.getInt("idcond"));
                ob.setCondPgto(rs.getString("cond"));
                ob.setDataos(rs.getDate("dataos"));
                ob.setSubTotal(rs.getDouble("subtotal"));
                ob.setServicoTerceiro(rs.getDouble("servicoterceiro"));
                ob.setMaoObra(rs.getDouble("maoobra"));
                ob.setDesconto(rs.getDouble("desconto"));
                ob.setTotal(rs.getDouble("total"));
                ob.setValorPago(rs.getDouble("valorpago"));
                ob.setResta(rs.getDouble("resta"));
                ob.setObs(rs.getString("obs"));
                ob.setTelefone(rs.getString("telefone"));
                ob.setCelular(rs.getString("celular"));
                ob.setOperadora(rs.getString("operadora"));
                
                os.add(ob);
              
                
            }
            mysql.desconectar();
            return os;
        } catch (SQLException ex) {
           // ex.printStackTrace();
            ex.getMessage();
        }
        return null;
    }
        
        
        
        public void excluirOS(int codos){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(deleta); 
           pstm.setInt(1, codos);
           pstm.executeUpdate();
           mysql.desconectar();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    
    public int buscarCodigoUltimaOS(){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(buscaUltimoCodigo);
            rs = pstm.executeQuery();
            if (rs.last()){
                return rs.getInt("codos");                
            }
            mysql.desconectar();
        }catch (SQLException ex){
            ex.printStackTrace();
        }
        return 0;
    }
        
        
    
     public void cadastrarOS(OSBean os){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(cadastraOs);
            pstm.setInt(1, os.getCodOs());
            pstm.setInt(2, os.getIDStatus());
            pstm.setInt(3, os.getIDFuncionario());
            pstm.setInt(4, os.getIDCliente());
            pstm.setInt(5, os.getIDForma());
            pstm.setInt(6, os.getIDCond());
            pstm.setDate(7, os.getDataos());
            pstm.setDouble(8, os.getSubTotal());
            pstm.setDouble(9, os.getServicoTerceiro());
            pstm.setDouble(10,os.getMaoObra());
            pstm.setDouble(11, os.getDesconto());
            pstm.setDouble(12, os.getTotal());
            pstm.setDouble(13, os.getValorPago());
            pstm.setDouble(14, os.getResta());
            pstm.setString(15, os.getObs());
            pstm.executeUpdate();
            mysql.desconectar();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }
    
    
    /*public void cadastrarItem(OSdetBean osdet){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(cadastraItem);
            
            pstm.setInt(1, osdet.getIDOs());
            pstm.setString(2, osdet.getIdproduto());
            pstm.setInt(3, osdet.getQtdOs());
            pstm.executeUpdate();
            mysql.desconectar();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }*/
        
        
}



